package tv.youxing.android.adapter;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import tv.youxing.android.R;
import tv.youxing.android.entity.AddDynamicModel;


/**
 * Created by apple on 17/3/15.
 */

/**
 * 项目名：   Dbs
 * 包名：     com.lizi.dbs.adapter
 * 文件名：
 * 创建者：   叶克武
 * 创建时间： 17/3/15 下午6:00
 * 描述：    发表动态图片列表
 */
public class AddAttachmentAdapter extends BaseAdapter {

    private Activity mActivity;
    private Context context;
    private List<AddDynamicModel> list;// this image file uri
    private ImageView image;


    public AddAttachmentAdapter(Activity activity,Context context, List<AddDynamicModel> list) {
        mActivity = activity;
        this.context = context;
        this.list = list;
    }

    public void addList(Uri uri) {
        AddDynamicModel image = new AddDynamicModel(uri);
        list.add(image);
    }

    public void addImgPathList(String imgPath) {
        AddDynamicModel image = new AddDynamicModel(imgPath);
        list.add(image);
    }

    @Override
    public int getCount() {
        return list.size()+1;
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        convertView = inflater.inflate(R.layout.adddynamic_gridview_item, null);
        image = (ImageView) convertView.findViewById(R.id.image);
        if (position < list.size()) {



            //单选模式下
//            Uri mImageCaptureUri = list.get(position).getImage_uri();
//            Bitmap photoBmp = null;
//            if ( mImageCaptureUri != null) {
//
//                try {
//                    photoBmp = getBitmapFormUri(mActivity, mImageCaptureUri);
//                    image.setImageBitmap(photoBmp);
//
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//
//            }



            ImageLoader.getInstance().displayImage("file://" + list.get(position).getImg_path(), image);


//            image.setImageURI(list.get(position).getImage_uri());

        } else if (position == list.size()) {
            image.setImageDrawable(context.getResources().getDrawable(
                    R.drawable.icon_release_btn_upload));
        }

//        image.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//               if (mActivity instanceof AddDynamicActivity){

                   //调用系统默认 单选
//                   Intent intent1 = new Intent();
//                   intent1.addCategory(Intent.CATEGORY_OPENABLE);
//                   intent1.setType("image/*");
//                   intent1.setAction(Intent.ACTION_GET_CONTENT);
//                   mActivity.startActivityForResult(intent1, 1);
//                   ((AddDynamicActivity) mActivity).startPick();


//                   if (list.size() < 6) {

                       //第三方库使用多选模式
//                       MultiImageSelector.create(context)
//                               .showCamera(true) // 是否显示相机. 默认为显示
//                               .count(9) // 最大选择图片数量, 默认为9. 只有在选择模式为多选时有效
//                               .single() // 单选模式
////                               .multi() // 多选模式, 默认模式;
//                               .start(mActivity, 1);


//                   } else {
//                       CustomToast.INSTANCE.showToast("最多只能选6张");
//                   }

//                }
//            }
//        });

        return  convertView;
    }


    /**
     * 通过uri获取图片并进行压缩
     *
     * @param uri
     */
    public Bitmap getBitmapFormUri(Activity ac, Uri uri) throws FileNotFoundException, IOException {
        InputStream input = ac.getContentResolver().openInputStream(uri);
        BitmapFactory.Options onlyBoundsOptions = new BitmapFactory.Options();
        onlyBoundsOptions.inJustDecodeBounds = true;
        onlyBoundsOptions.inDither = true;//optional
        onlyBoundsOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;//optional
        BitmapFactory.decodeStream(input, null, onlyBoundsOptions);
        input.close();
        int originalWidth = onlyBoundsOptions.outWidth;
        int originalHeight = onlyBoundsOptions.outHeight;
        if ((originalWidth == -1) || (originalHeight == -1))
            return null;
        //图片分辨率以480x800为标准
        float hh = 320f;//这里设置高度为800f
        float ww = 240f;//这里设置宽度为480f
        //缩放比。由于是固定比例缩放，只用高或者宽其中一个数据进行计算即可
        int be = 1;//be=1表示不缩放
        if (originalWidth > originalHeight && originalWidth > ww) {//如果宽度大的话根据宽度固定大小缩放
            be = (int) (originalWidth / ww);
        } else if (originalWidth < originalHeight && originalHeight > hh) {//如果高度高的话根据宽度固定大小缩放
            be = (int) (originalHeight / hh);
        }
        if (be <= 0)
            be = 1;
        //比例压缩
        BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
        bitmapOptions.inSampleSize = be;//设置缩放比例
        bitmapOptions.inDither = true;//optional
        bitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;//optional
        input = ac.getContentResolver().openInputStream(uri);
        Bitmap bitmap = BitmapFactory.decodeStream(input, null, bitmapOptions);
        input.close();

        return compressImage(bitmap);//再进行质量压缩
    }






    /**
     * 质量压缩方法
     *
     * @param image
     * @return
     */
    public static Bitmap compressImage(Bitmap image) {

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法，这里100表示不压缩，把压缩后的数据存放到baos中
        int options = 100;
        while (baos.toByteArray().length / 1024 > 100) {  //循环判断如果压缩后图片是否大于100kb,大于继续压缩
            baos.reset();//重置baos即清空baos
            //第一个参数 ：图片格式 ，第二个参数： 图片质量，100为最高，0为最差  ，第三个参数：保存压缩后的数据的流
            image.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%，把压缩后的数据存放到baos中
            options -= 10;//每次都减少10
        }
        ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中
        Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片
        return bitmap;
    }
}
